/**
 * 适配 canvas 2d 上下文
 * @param ctx canvas 2d 上下文
 * @returns
 */
export function canvas2d(ctx: CanvasRenderingContext2D): UniApp.CanvasContext {
    return Object.assign(ctx, {
        setFillStyle(color: string | CanvasGradient) {
            ctx.fillStyle = color;
        },
        setStrokeStyle(color: string | CanvasGradient | CanvasPattern) {
            ctx.strokeStyle = color;
        },
        setLineWidth(lineWidth: number) {
            ctx.lineWidth = lineWidth;
        },
        setLineCap(lineCap: 'butt' | 'round' | 'square') {
            ctx.lineCap = lineCap;
        },

        setFontSize(font: string) {
            ctx.font = font;
        },
        setGlobalAlpha(alpha: number) {
            ctx.globalAlpha = alpha;
        },
        setLineJoin(lineJoin: 'bevel' | 'round' | 'miter') {
            ctx.lineJoin = lineJoin;
        },
        setTextAlign(align: 'left' | 'center' | 'right') {
            ctx.textAlign = align;
        },
        setMiterLimit(miterLimit: number) {
            ctx.miterLimit = miterLimit;
        },
        setShadow(offsetX: number, offsetY: number, blur: number, color: string) {
            ctx.shadowOffsetX = offsetX;
            ctx.shadowOffsetY = offsetY;
            ctx.shadowBlur = blur;
            ctx.shadowColor = color;
        },
        setTextBaseline(textBaseline: 'top' | 'bottom' | 'middle') {
            ctx.textBaseline = textBaseline;
        },
        createCircularGradient() {},
        draw() {},
        addColorStop() {}
    }) as unknown as UniApp.CanvasContext;
}
